package com.test.redis;

import com.test.redis.service.DynamicDataSourceManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 管理数据源：
 创建数据源：POST /api/datasource/config
 更新数据源：PUT /api/datasource/config/{id}
 删除数据源：DELETE /api/datasource/config/{id}
 刷新所有数据源：POST /api/datasource/refresh

 多实例同步：当在一个实例上修改数据源配置时，该实例会通过Redis发布消息，
 其他实例接收到消息后会同步更新数据源。

 4. 注意事项
 确保Redis服务器正常运行，所有实例连接到同一个Redis
 数据源配置修改后，正在使用的连接不会立即生效，新连接会使用新配置
 建议在生产环境中添加适当的错误处理和重试机制
 可以考虑添加数据源健康检查功能
 */
@SpringBootApplication
public class DataSourceManagerApplication implements CommandLineRunner {
    
    @Autowired
    private DynamicDataSourceManager dataSourceManager;
    
    public static void main(String[] args) {
        SpringApplication.run(DataSourceManagerApplication.class, args);
    }
    
    @Override
    public void run(String... args) {
        // 应用启动时初始化数据源
        dataSourceManager.initDataSources();
    }
}